import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    count: 0
  },
  //只有mutations中定义的函数才能直接修改state中的数据
  mutations: {
    countAdd(state) {
      state.count++
    }
  },
  countNumAdd(state, step) {
    state.count += step
  },
  // 异步操作
  actions: {
    addAnync(context) {
      setTimeout(() => {
        // 在actions中,不能直接修改state中的数据
        //必须通过 context.commit() 触发某个mutation 才行
        context.commit('countAdd')
      }, 1000);
    },
    addNumAsync(context, step) {
      setTimeout(() => {
        context.commit('countNumAdd', step)
      }, 1000);
    },
  },
  // 封装数据不会修改store里面的变量
  getters: {
    showNumber(state) {
      return (`当前数据为${state.count}`)
    }
  },
  modules: {}
})